/** 定义控制器层 */
app.controller('goodsController', function($scope, $controller, baseService) {

    /** 指定继承baseController */
    $controller('baseController', {$scope: $scope});

    /** 查询条件对象 */
    $scope.searchEntity = {};
    /** 分页查询(查询条件) */
    $scope.search = function (page, rows) {
        baseService.findByPage("/goods/findByPage", page,
            rows, $scope.searchEntity)
            .then(function (response) {
                /** 获取分页查询结果 */
                $scope.dataList = response.data.rows;
                /** 更新分页总记录数 */
                $scope.paginationConf.totalItems = response.data.total;
            });
    };

    /** 添加或修改 */
    $scope.saveOrUpdate = function () {

        //获取富文本域的内容赋值给属性
        //kindEditor常用的一个方法html()，可用于获取编辑器的内容
        $scope.goods.goodsDesc.introduction = editor.html();

        /** 发送post请求 */
        baseService.sendPost("/goods/save", $scope.goods)
            .then(function (response) {
                if (response.data) {

                    alert("保存成功！");
                    $scope.goods = {};

                    /** 清空富文本编辑器 */
                    editor.html('');
                } else {
                    alert("操作失败！");
                }
            });
    };

    /** 显示修改 */
    $scope.show = function (entity) {
        /** 把json对象转化成一个新的json对象 */
        $scope.entity = JSON.parse(JSON.stringify(entity));
    };

    /** 批量删除 */
    $scope.delete = function () {
        if ($scope.ids.length > 0) {
            baseService.deleteById("/goods/delete", $scope.ids)
                .then(function (response) {
                    if (response.data) {
                        /** 重新加载数据 */
                        $scope.reload();
                    } else {
                        alert("删除失败！");
                    }
                });
        } else {
            alert("请选择要删除的记录！");
        }
    };

    /** 上传文件*/
    $scope.uploadFile = function () {
        baseService.uploadFile().then(function (response) {

            /** 设置图片访问地址 */
            if (response.data.status == 200) {
                $scope.picEntity.url = response.data.url;
            } else {

                alert("图片上传失败");
            }


        });
    }
    /** 定义存储图片的数组 */
    $scope.goods = {
        goodsDesc: {itemImages: [],specificationItems:[]}
    };
    /**如果$scope.goods.goodsDesc.specificationItems数组中的attributeName属性的值点击当前数据的name相同
     * 就向当前的attributeValue数组中添加选中的数据，
     *否则如果$scope.goods.goodsDesc.specificationItems数组中attributeName属性的值与当前点击的name没有
     * 就向数组[]中添加{"attributeName":name,"attributeValue":[value]}
     *
     */
    /**定义一个保存规格选项数据到商品描述表中的specification_items中*/
    $scope.saveSpce =function (event,name,value) {
        /** 根据json对象的key到json数组中搜索该key值对应的对象 */
        var obj =$scope.searchJsonByKey($scope.goods.goodsDesc.specificationItems,'attributeName',name);

        //判断obj是否为空，也就是判断specificationItems数组是否为空
        //如果不为空
        if(obj){

            //判断用户是否选中,如果选中，就将规格选项数据添加到数组中
            if(event.target.checked){
              obj.attributeValue.push(value);
            }else{//否则没选中从数组中删除
                 obj.attributeValue.splice(obj.attributeValue.indexOf(value),1);

                 //如果选项都取消了，将此条记录删除
                if(obj.attributeValue.length==0){
                    $scope.goods.goodsDesc.specificationItems.splice($scope.goods.goodsDesc.specificationItems.indexOf(obj),1);
                }
            }

        }else{//否则为空，则新增数组元素
               $scope.goods.goodsDesc.specificationItems.push({"attributeName":name,"attributeValue":[value]});
        }
    }

    /**创建一个sku具体商品方法 */
    $scope.createItems =function () {
        //定义一个数组。并且初始化数组,这个数组就是用来存储具体商品
        $scope.goods.items =[{spec:{},price:0,num:999,status:'0',isDefault:'0'}];


        /** 定义选中的规格选项数组 */
        var specItems =$scope.goods.goodsDesc.specificationItems;
        /** 遍历选中的数组 */
        for(var i=0;i<specItems.length;i++){
             //扩展原来的SKU数组
             $scope.goods.items= swapItems($scope.goods.items,specItems[i].attributeName,specItems[i].attributeValue);
        }
        /** 扩展原来的SKU数组，也就是将当前的数组中添加attributeName和attributeValue这两个属性进入
         *  将选中的所有attributeName和attributeValue都遍历到goods.items数组中的spec中存储,
         *  目的是为了显示数据在具体商品上(SKP中)
         * */

    };
    //扩展原来的SKU数组

    var swapItems =function (items, attributeName, attributeValue) {
       //定义一个新的SKU数组
        var newItems = new Array();

        //遍历旧的SKU数组
        for(var i=0;i<items.length;i++){
            //或者第一个SKU
            var item =items[i];
            //遍历attributeValue数组，然后将attributeValue中的每一个数据添加到一个新的item中存储
            for (var j=0;j<attributeValue.length;j++){
                //将旧的json对象转换成一个新的对象
                var newItem = JSON.parse(JSON.stringify(item));
                newItem.spec[attributeName]=attributeValue[j];

                newItems.push(newItem);

            }

        }
        return newItems;


    };

    /** 保存图片到数组 */
    $scope.addPic = function () {
        $scope.goods.goodsDesc.itemImages.push($scope.picEntity);
    }

    /** 从数组中删除序列号，也就是删除图片*/
    $scope.removePic = function (index) {
        $scope.goods.goodsDesc.itemImages.splice(index, 1);
    }

    /** 根据父级(parentId)查询分类
     * $scope[name]的作用是，将返回的结果赋值给name存储
     * $scope[name]返回是一个list<ItemCat>
     * */
    //查询一级
    // 根据父级id查询商品分类
    $scope.findItemCatByParentId = function (parentId, name) {
        baseService.sendGet("/itemCat/findItemCatByParentId?parentId="
            + parentId).then(function (response) {
            // 获取响应数据
            $scope[name] = response.data;
        });
    };
    //查询二级
    //$watch方法用于监控某个变量的值，被监控的值发生变化，就自动执行相应的函数
    //将goods.category1Id赋值给newValue
    $scope.$watch("goods.category1Id", function (newValue, oldValue) {

        if (newValue) {
            $scope.findItemCatByParentId(newValue, 'itemCatList2');
        } else {
            $scope.itemCatList2 = [];
        }

    });

    //查询三级
    $scope.$watch("goods.category2Id", function (newValue, oldValue) {

        if (newValue) {
            $scope.findItemCatByParentId(newValue, 'itemCatList3');
        } else {
            $scope.itemCatList3 = [];
        }
    });

    // $watch():用于监听goods.category3Id变量是否发生改变
    $scope.$watch('goods.category3Id', function(newValue, oldValue){
        if (newValue){
            // 循环三级分类数组 List<ItemCat> : [{},{}]
            for (var i = 0; i < $scope.itemCatList3.length; i++){
                // 取一个数组元素 {}
                var itemCat = $scope.itemCatList3[i];
                // 判断id
                if (itemCat.id == newValue){
                    $scope.goods.typeTemplateId = itemCat.typeId;
                    break;
                }else{
                    $scope.goods.typeTemplateId =null;
                }
            }
        }
    });

    //根据模板id来查询模板信息
    $scope.$watch('goods.typeTemplateId',function (newValue,oldValue) {

        if(!newValue){
            return;
        }
        baseService.findOne("/typeTempPlate/findOne",newValue).then(function (response) {

            $scope.brandIds=JSON.parse(response.data.brandIds);

            //设置矿长属性
            $scope.goods.goodsDesc.customAttributeItems=JSON.parse(response.data.customAttributeItems);
        });


        baseService.findOne("/typeTempPlate/findSpecByTempPlateId",newValue).then(function (response) {
            //这里封装了规格表的数据和规格选项表的数据
            $scope.spceList = response.data;
        });

    });

});





